/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Engine;

import Control.GameController;

/**
 *
 * @author Gustavo Buzogany Eboli
 */
public abstract class KeyControl {

    protected KeyManager master;
    protected byte[] keyMap;
    protected GameController gc;

    protected KeyControl()
    {
        keyMap = new byte[256];
    }

    protected void setGameController(GameController gc)
    {
        this.gc = gc;
    }

    /**
     * M?todo respons?vel por pegar o valor de uma tecla no mapa.
     * @param c Caractere chave (tecla)
     * @return Valor booleano da chave.
     */
    public byte getKeyFlag(Character c) {
        return keyMap[c];
    }

    /**
     * M?todo respons?vel por mudar o valor da flag de uma tecla no mapa.
     * @param c Caractere que servir? de chave
     * @param val Valor booleano que ser? atribu?do ? tecla
     */
    public void setKeyFlag(char c, byte val) {
        if(c == 1)
        System.out.println("trocou 0");
        if (c < 256) {
            if (!(val == 1 && keyMap[c] == 3)) {
                keyMap[c] = val;
            }
        }
    }

    public abstract void pool();

    /**
     * Atribui o mestre, para ser recuperado depois, quando for necessario trocar entre jogo e menus.
     * @param km
     */
    public void setMaster(KeyManager km) {
        master = km;
    }

    public KeyManager getMaster() {
        return master;
    }
}
